home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 684 / 684.xpi / chrome / fireftp.jar / content / js / dialogs / diff.js < prev    next >
Text File  |  2008-01-12  |  6KB  |  163 lines

  1. var gStrbundle;
  2. var gArgs;
  3. var gDiffTree;
  4. var gRecursive;
  5. var gIos = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
  6.  
  7. function init() {
  8.   setTimeout(window.sizeToContent, 0);
  9.  
  10.   gStrbundle = $("strings");
  11.   gArgs      = window.arguments;
  12.   gDiffTree  = $('diffTree');
  13.   gRecursive = gArgs[6];
  14.   $('diff3').getButton("accept").label = gStrbundle.getString("diffSyncBtn");
  15.  
  16.   for (var x = 0; x < gArgs[0].length; ++x) {
  17.     constructRow(gArgs[0][x].file,      gStrbundle.getString("diffMissingLocal"),  gArgs[0][x].action, "local"   + x, "upload");
  18.   }
  19.  
  20.   for (var x = 0; x < gArgs[1].length; ++x) {
  21.     constructRow(gArgs[1][x].file,      gStrbundle.getString("diffMissingRemote"), gArgs[1][x].action, "remote"  + x, "download");
  22.   }
  23.  
  24.   for (var x = 0; x < gArgs[2].length; ++x) {
  25.     constructRow(gArgs[2][x].localFile, gArgs[2][x].reason,                        gArgs[2][x].action, "diff"    + x);
  26.   }
  27.  
  28.   for (var x = 0; x < gArgs[3].length; ++x) {
  29.     constructRow(gArgs[3][x].localFile, gStrbundle.getString("diffNewer"),         gArgs[3][x].action, "newer"   + x);
  30.   }
  31.  
  32.   for (var x = 0; x < gArgs[4].length; ++x) {
  33.     constructRow(gArgs[4][x].localFile, gStrbundle.getString("diffOlder"),         gArgs[4][x].action, "older"   + x);
  34.   }
  35.  
  36.   if (!gArgs[0].length) {
  37.     $('localRow').collapsed  = true;
  38.   }
  39.  
  40.   if (!gArgs[1].length) {
  41.     $('remoteRow').collapsed = true;
  42.   }
  43.  
  44.   if (!gArgs[2].length) {
  45.     $('diffRow').collapsed   = true;
  46.   }
  47.  
  48.   if (!gArgs[3].length) {
  49.     $('newerRow').collapsed  = true;
  50.   }
  51.  
  52.   if (!gArgs[4].length) {
  53.     $('olderRow').collapsed  = true;
  54.   }
  55. }
  56.  
  57. function $C(el) {
  58.   return document.createElement(el);
  59. }
  60.  
  61. function constructRow(file, reason, action, id, disable) {
  62.   var treeitem     = $C("treeitem");
  63.   var treerow      = $C("treerow");
  64.   var fileCell     = $C("treecell");
  65.   var reasonCell   = $C("treecell");
  66.   var downloadCell = $C("treecell");
  67.   var uploadCell   = $C("treecell");
  68.   var nothingCell  = $C("treecell");
  69.  
  70.   treeitem    .setAttribute("id",         id);
  71.   treeitem    .setAttribute("choice",     action);
  72.   treeitem    .setAttribute("disable",    disable ? disable  : "");
  73.   fileCell    .setAttribute("label",      gRecursive ? file.path : file.leafName);
  74.   fileCell    .setAttribute("properties", file.isDirectory() ? "isFolder" : (file.isSymlink() ? "isLink" : "") + " nameCol");
  75.   fileCell    .setAttribute("src",        file.isDirectory() || file.isSymlink() ? ""
  76.                                         : (disable == "upload" ? "moz-icon://" + file.leafName + "?size=16"
  77.                                                                : "moz-icon://" + gIos.newFileURI(file).spec + "?size=16"));
  78.   reasonCell  .setAttribute("label",      reason);
  79.   downloadCell.setAttribute("id",         id       + "download");
  80.   downloadCell.setAttribute("value",      action  == "download" ? "true"  : "false");
  81.   downloadCell.setAttribute("editable",   disable == "download" ? "false" : "true");
  82.   uploadCell  .setAttribute("id",         id       + "upload");
  83.   uploadCell  .setAttribute("value",      action  == "upload"   ? "true"  : "false");
  84.   uploadCell  .setAttribute("editable",   disable == "upload"   ? "false" : "true");
  85.   nothingCell .setAttribute("id",         id       + "nothing");
  86.   nothingCell .setAttribute("value",      action  == "nothing"  ? "true"  : "false");
  87.  
  88.   treerow  .appendChild(fileCell);
  89.   treerow  .appendChild(reasonCell);
  90.   treerow  .appendChild(downloadCell);
  91.   treerow  .appendChild(uploadCell);
  92.   treerow  .appendChild(nothingCell);
  93.   treeitem .appendChild(treerow);
  94.   $('main').appendChild(treeitem);
  95. }
  96.  
  97. function parseList() {
  98.   gArgs[5].value = true;     // return value of this dialog
  99.  
  100.   for (var x = 0; x < gArgs[0].length; ++x) {
  101.     gArgs[0][x].action = $("local"   + x).getAttribute('choice');
  102.   }
  103.  
  104.   for (var x = 0; x < gArgs[1].length; ++x) {
  105.     gArgs[1][x].action = $("remote"  + x).getAttribute('choice');
  106.   }
  107.  
  108.   for (var x = 0; x < gArgs[2].length; ++x) {
  109.     gArgs[2][x].action = $("diff"    + x).getAttribute('choice');
  110.   }
  111.  
  112.   for (var x = 0; x < gArgs[3].length; ++x) {
  113.     gArgs[3][x].action = $("newer"   + x).getAttribute('choice');
  114.   }
  115.  
  116.   for (var x = 0; x < gArgs[4].length; ++x) {
  117.     gArgs[4][x].action = $("older"   + x).getAttribute('choice');
  118.   }
  119.  
  120.   return true;
  121. }
  122.  
  123. function mouseDown(event) {
  124.   var row = { }; var col = { }; var child = { };
  125.   gDiffTree.treeBoxObject.getCellAt(event.pageX, event.pageY, row, col, child);
  126.  
  127.   if (row.value != -1) {
  128.     gDiffTree.view.selection.currentIndex = row.value;
  129.  
  130.     var row     = gDiffTree.contentView.getItemAtIndex(row.value);
  131.     var id      = row.getAttribute('id');
  132.     var current = row.getAttribute('choice');
  133.     var disable = row.getAttribute('disable');
  134.  
  135.     if ((col.value == gDiffTree.columns["download"] && disable == "download")
  136.      || (col.value == gDiffTree.columns["upload"]   && disable == "upload")
  137.      || (col.value != gDiffTree.columns["download"] && col.value != gDiffTree.columns["upload"] && col.value != gDiffTree.columns["nothing"])) {
  138.       return;
  139.     }
  140.  
  141.     var colName   = col.value == gDiffTree.columns["download"] ? "download" : (col.value == gDiffTree.columns["upload"] ? "upload" : "nothing");
  142.  
  143.     var newChoice = id.indexOf('local')  != -1 ? (current == "download" ? "nothing" : "download")
  144.                  : (id.indexOf('remote') != -1 ? (current == "upload"   ? "nothing" : "upload")
  145.                                                : (current == "nothing"  ? (colName == "download" ? "download" : "upload")
  146.                                                                         : (colName == current    ? "nothing"  : colName)));
  147.  
  148.     row.setAttribute('choice', newChoice);
  149.     $(id + "download").setAttribute('value',  newChoice == "download");
  150.     $(id + "upload")  .setAttribute('value',  newChoice == "upload");
  151.     $(id + "nothing") .setAttribute('value',  newChoice == "nothing");
  152.   }
  153. }
  154.  
  155. function setDefault(index, type, newChoice) {
  156.   for (var x = 0; x < gArgs[index].length; ++x) {
  157.     $(type   + x)             .setAttribute('choice', newChoice);
  158.     $(type   + x + "download").setAttribute('value',  newChoice == "download");
  159.     $(type   + x + "upload")  .setAttribute('value',  newChoice == "upload");
  160.     $(type   + x + "nothing") .setAttribute('value',  newChoice == "nothing");
  161.   }
  162. }
  163.